//
//  NetworkHandler.m
//  UI21_04_Block实现网络请求回调
//
//  Created by Scott on 16/4/7.
//  Copyright © 2016年 Scott. All rights reserved.
//

#import "NetworkHandler.h"

@implementation NetworkHandler


+ (void)networkHandlerGETWithURL:(NSString *)urlString completionHandler:(void (^)(id result, NSURLResponse *response, NSError *error))block{
    
    
    // url中只支持ASCII码, 如果出现中文需要进行转码.
    // url中的中文一般出现在查询部分, 所以将查询部分进行转码.
    NSString *newStr = [urlString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
    
    
    // Core API
    NSURLSession *session = [NSURLSession sharedSession];

    
    // URL
    NSURL *url = [NSURL URLWithString:newStr];
    
    
    // session添加任务
    NSURLSessionDataTask *task = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        

        // 数据解析
        if (data) {
            id result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
            // 进入主线程, 将result等回调出去.
            dispatch_async(dispatch_get_main_queue(), ^{
                
                // 通过block回调(调用block)
                block(result, response, error);
                
            });
            
        }
        
    }];
    
    // 开始任务
    [task resume];

}




@end
